package com.logan.common;

import java.io.File;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

@Controller
@RequestMapping("/example/")
public class exampleController {
	protected final Logger logger = LoggerFactory.getLogger(this.getClass());

	@RequestMapping("index")
	@ResponseBody
	public Map<String, Object> index() {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("code", true);
		logger.debug("--------------------------------");
		return map;

	}

	@RequestMapping("index1")
	public String index1() {
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("code", true);
		logger.debug("--------------------------------");
		return "index";

	}

	@RequestMapping("upload")
	public String upload(
			@RequestParam(value = "file", required = false) MultipartFile file,
			HttpServletRequest request, ModelMap model) {
		logger.debug("----------file-----------------");
		String path = request.getSession().getServletContext()
				.getRealPath("upload");
		if (!file.isEmpty()) {
			String fileName = file.getOriginalFilename();
			// String fileName = new Date().getTime()+".jpg";
			File targetFile = new File(path, fileName);
			if (!targetFile.exists()) {
				targetFile.mkdirs();
			}

			// 保存
			try {
				file.transferTo(targetFile);
			} catch (Exception e) {
				e.printStackTrace();
			}
			model.addAttribute("fileUrl", request.getContextPath() + "/upload/"
					+ fileName);
		}
		return "index";

	}
	/**
	 * Spring MVC 的请求参数获取的几种方法 
通过@PathVariabl注解获取路径中传递参数

JAVA
 @RequestMapping(value = "/{id}/{str}")
 public ModelAndView helloWorld(@PathVariable String id, @PathVariable String str) {
 System.out.println(id);
 System.out.println(str);
 return new ModelAndView("/helloWorld");
}

用@ModelAttribute注解获取POST请求的FORM表单数据
JSP
<form method="post" action="hao.do">
 a: <input id="a" type="text" name="a"/>
 b: <input id="b" type="text" name="b"/>
 <input type="submit" value="Submit" />
</form>

JAVA pojo
 public class Pojo{
 private String a;
 private int b;
}


JAVA controller
@RequestMapping(method = RequestMethod.POST)
public String processSubmit(@ModelAttribute("pojo") Pojo pojo) {
 return "helloWorld";
 }

直接用HttpServletRequest获取
JAVA
@RequestMapping(method = RequestMethod.GET)
public String get(HttpServletRequest request, HttpServletResponse response) {
 System.out.println(request.getParameter("a"));
 return "helloWorld";
}

用注解@RequestParam绑定请求参数a到变量a
当请求参数a不存在时会有异常发生,可以通过设置属性required=false解决,
例如: @RequestParam(value="a", required=false)
JAVA
@RequestMapping(value = "/requestParam", method = RequestMethod.GET)
public String setupForm(@RequestParam("a") String a, ModelMap model) {
 System.out.println(a);
return "helloWorld";} 

	 */
}
